package day17.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

//测试 注解
public class Test4 {
}
//第一步,@interface定义注解 -- 语法和java不太一样
//1,@Target--描述注解可以出现的位置--ElementType
//2,@Retention--描述注解的生命周期--RetentionPolicy
//@Target( ElementType.FIELD } )//FIELD表示可以出现在成员变量上
@Target({ ElementType.FIELD , ElementType.METHOD })//可以 同时出现在 多个位置上
@Retention(RetentionPolicy.SOURCE)//SOURCE表示可以在.java文件中存在
@interface Controller{
    //3,给注解添加功能--属性
//    String name() default ""; //4,给属性设置默认值
    String name();//5,属性没有默认值, 就要求使用时必须赋值了...
}
//第二步,使用注解 @Controller
//@Controller//1, 报错,出现在了错误的位置
class Hello{
    @Controller(name="name属性要用")//6,给name属性赋值
    String name;
    @Controller(name="show()")
    public void show(int a){
        System.out.println(a);
    }
}


